package strategy;

import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.util.Properties;

public class ReadConf {
    public static void main(String[] args) {
        System.out.println("config");

        // 通过类加载器加载 resources 下面的资源 获取当前类的类加载器
        InputStream inputStream = ReadConf.class.getClassLoader().getResourceAsStream("./TestConf");

        // 通过配置文件的管理类解析获取配置文件。
        Properties properties = new Properties();

        try {
            // 加载到配置到管理器里面
            properties.load(inputStream);

            System.out.println(properties.get("sort").toString().equals("strategy.Config"));
            try {
                // 通过类加载器把磁盘上的class加载到内存并得到它的实例。
                // 把本地磁盘上的类通过Class.forName load到内存并且得到它的资源 这个叫做反射
                Config config  = (Config) Class.forName(properties.get("sort").toString()).getConstructor().newInstance();
                System.out.println(config.a);
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }


    }
}
